package prueba.backing;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

import javax.faces.component.html.HtmlForm;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import pe.gob.onp.util.Constante;
import pe.gob.onp.util.LazyLoadingList;
import pe.gob.onp.util.WidgetCreator;
import pe.gob.onp.workflow.action.CGenericController;
import pe.gob.onp.workflow.bean.LazyCliente;

import com.bean.BTipoCliente;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.util.Factory;





public class Welcome extends CGenericController{
    private HtmlForm form1;    
    private List lstTipoCliente;
    
    private List lstPaginada;
    private LazyCliente lstLazyTipoCliente;
    
	BTipoCliente btipoCliente;
    BTipoCliente btipoClienteAL;	
    
    //Hashtable con los properties para crear el datatable dinamicamente
    Hashtable htDataTableProperties;
	private boolean muestraPopUpTipoCliente;
    private HtmlDataTable dtTipoCliente;
    
    public Welcome() throws Exception{
    	btipoCliente = new BTipoCliente();
    	btipoClienteAL = new BTipoCliente();
    	lstTipoCliente = new ArrayList();
    	ejbBase = Factory.getCliente();
    	lstLazyTipoCliente = new LazyCliente(this.ejbBase);
    	lstLazyTipoCliente.setSize(ejbBase.contarFilas());
    	lstPaginada = new LazyLoadingList(lstLazyTipoCliente,5);
    	
    	inicializarComponentes();
    	crearDataTable(htDataTableProperties);
    	htDataTableProperties.put(Constante.DATATABLE_WIDTH, "400px");
    	htDataTableProperties.put(Constante.DATATABLE_PREFIX, "dtbTipoCliente");
    	this.dtTipoCliente = WidgetCreator.crearDataTable(htDataTableProperties);
    }
    
    public void despuesDeEliminar(ActionEvent e){
    	System.out.println("Welcome - despuesDeEliminar");
    	try{
    		lstLazyTipoCliente = new LazyCliente(this.ejbBase);
        	lstLazyTipoCliente.setSize(ejbBase.contarFilas());
        	lstPaginada = new LazyLoadingList(lstLazyTipoCliente,5);	
    	}catch(Exception ex){
    		StackTraceElement[] xx = ex.getStackTrace();
	    	for(int i=0;i<xx.length;i++){
	    		System.err.println("TRAZA-ERROR : " + xx[i]);
	    	}
    	}
    }

	public List getLstTipoCliente() {
		return lstTipoCliente;
	}

	public void setLstTipoCliente(List lstTipoCliente) {
		this.lstTipoCliente = lstTipoCliente;
	}

	public BTipoCliente getBtipoClienteAL() {
		return btipoClienteAL;
	}

	public void setBtipoClienteAL(BTipoCliente btipoClienteAL) {
		this.btipoClienteAL = btipoClienteAL;
	}

	public BTipoCliente getBtipoCliente() {
		return btipoCliente;
	}

	public void setBtipoCliente(BTipoCliente btipoCliente) {
		this.btipoCliente = btipoCliente;
	}

	public void setForm1(HtmlForm form1) {
        this.form1 = form1;
    }

    public HtmlForm getForm1() {
        return form1;
    }
    
    public Hashtable getHtDataTableProperties() {
		return htDataTableProperties;
	}

	public void setHtDataTableProperties(Hashtable htDataTableProperties) {
		this.htDataTableProperties = htDataTableProperties;
	}

	public boolean isMuestraPopUpTipoCliente() {
		return muestraPopUpTipoCliente;
	}

	public void setMuestraPopUpTipoCliente(boolean muestraPopUpTipoCliente) {
		this.muestraPopUpTipoCliente = muestraPopUpTipoCliente;
	}

	public HtmlDataTable getDtTipoCliente() {
		return dtTipoCliente;
	}

	public void setDtTipoCliente(HtmlDataTable dtTipoCliente) {
		this.dtTipoCliente = dtTipoCliente;
	}
	
	public List getLstPaginada() {
		return lstPaginada;
	}

	public void setLstPaginada(List lstPaginada) {
		this.lstPaginada = lstPaginada;
	}
	
	public LazyCliente getLstLazyTipoCliente() {
		return lstLazyTipoCliente;
	}

	public void setLstLazyTipoCliente(LazyCliente lstLazyTipoCliente) {
		this.lstLazyTipoCliente = lstLazyTipoCliente;
	}
    
    public String inicio() throws Exception{
    	lstTipoCliente.clear();
    	lstTipoCliente = ejbBase.listar();
    	btipoCliente = new BTipoCliente();
     	btipoClienteAL = new BTipoCliente();
    	return "listado";
    }

    public String commandButton1_action() throws Exception {
        System.out.println("commandButton1_action");
        lstTipoCliente.clear();
        ejbBase.registrar(btipoClienteAL);
     	btipoCliente = new BTipoCliente();
     	btipoClienteAL = new BTipoCliente();
     	lstTipoCliente = ejbBase.listar(); 
        
        return "listado";
    }
    
    public String nuevo(){
    	System.out.println("nuevo");
    	btipoClienteAL = new BTipoCliente();
    	btipoCliente = new BTipoCliente();
    	return "editar";
    }
       
    public String editar(){
    	System.out.println("editando");
    	FacesContext context = FacesContext.getCurrentInstance();        
    	btipoClienteAL = (BTipoCliente) context.getExternalContext().getRequestMap().get("tcliente");         
    	return "editar";
    }
    
    public String modificar_TipoCliente()throws Exception{
    	System.out.println("Welcome - modificar_TipoCliente");
    	ejbBase.actualizar(btipoClienteAL);
    	btipoClienteAL = new BTipoCliente();
    	btipoCliente = new BTipoCliente();
    	lstTipoCliente.clear();
    	lstTipoCliente = ejbBase.listar(); 
    	return "listado";
    }
    
    public void eliminar() throws RemoteException{
    	System.out.println("Welcome - eliminar");
    	FacesContext context = FacesContext.getCurrentInstance();        
    	btipoClienteAL = (BTipoCliente) context.getExternalContext().getRequestMap().get("tcliente");
    	ejbBase.eliminar(btipoClienteAL);
    	btipoClienteAL = new BTipoCliente();
    	btipoCliente = new BTipoCliente();
    	lstTipoCliente.clear();
    	lstTipoCliente = ejbBase.listar();
    }
    
    public void inicializarComponentes(){
		this.htDataTableProperties = new Hashtable();
		List lstNombreColumnas = new ArrayList();
		lstNombreColumnas.add("Cod.Cliente");
		lstNombreColumnas.add("Nombre");
		
		Hashtable htColumnBinding = new Hashtable();
		htColumnBinding.put("Cod.Cliente", "#{tcliente.pk.idCliente}");
		htColumnBinding.put("Nombre", "#{tcliente.nomCliente}");
		
		htDataTableProperties.put(Constante.DATATABLE_PREFIX, "dtbCliente");
		htDataTableProperties.put(Constante.DATATABLE_SOURCE_LIST, lstPaginada);
		htDataTableProperties.put(Constante.DATATABLE_HEADER_LIST, lstNombreColumnas);
		htDataTableProperties.put(Constante.DATATABLE_NUMBER_ROWS, new Integer(5));
		htDataTableProperties.put(Constante.DATATABLE_VAR, "tcliente");
		htDataTableProperties.put(Constante.DATATABLE_WIDTH, "800px");
		htDataTableProperties.put(Constante.DATATABLE_SOURCE_LIST_BINDING,"#{backing_welcome.lstPaginada}");
		htDataTableProperties.put(Constante.DATATABLE_COLUMN_BINDING, htColumnBinding);
	}

    
}
